#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>

int main()
{
    const char* msg1 = "hello printf\n";
    const char* msg2 = "hello fprintf\n";
    const char* msg3 = "hello write\n";
    
    printf("%s",msg1);
    fprintf(stdout,"%s",msg2);
    write(1,msg3,strlen(msg3));
    
    fork();

    //printf("hello");
    //const char* msg = "abcdef";
    //write(1,msg,strlen(msg));
    //close(1);
    return 0;
}

//int main()
//{
//    int fd = open("log.txt",O_CREAT | O_WRONLY | O_TRUNC,0666);
//    if(fd < 1)  return -1;
//    printf("hello\n");
//    dup2(fd,1);
//    printf("hello\n");
//
//    //close(1);
//    //int fd = open("log.txt",O_CREAT | O_WRONLY | O_TRUNC, 0666);
//    //if(fd < 0)  return -1;
//    //printf("hello world");
//    
//    return 0;
//}

//int main()
//{
//    close(0);
//    close(1);
//    close(2);
//
//    int fd1 = open("log1.txt",O_CREAT | O_WRONLY | O_TRUNC,0666);
//    int fd2 = open("log2.txt",O_CREAT | O_WRONLY | O_TRUNC,0666);
//    int fd3 = open("log3.txt",O_CREAT | O_WRONLY | O_TRUNC,0666);
//    
//    printf("fd1 : %d\n",fd1);
//    printf("fd2 : %d\n",fd2);
//    printf("fd3 : %d\n",fd3);
//
//    return 0;
//}

//int main()      
//{   
//    int fd1 = open("log1.txt",O_CREAT | O_WRONLY | O_TRUNC, 0666 );
//    if(fd1 < 0)  return -1;
//    printf("fd1 : %d\n",fd1);
//    close(0);
//    close(2);
//    int fd2 = open("log2.txt",O_CREAT | O_WRONLY | O_TRUNC, 0666 );
//    if(fd2 < 0)  return -1;
//    printf("fd2 : %d\n",fd2);
//    int fd3 = open("log3.txt",O_CREAT | O_WRONLY | O_TRUNC, 0666 );
//    if(fd3 < 0)  return -1;
//    printf("fd3 : %d\n",fd3);
//    //int fd1 = open("log1.txt",O_CREAT | O_WRONLY | O_APPEND,0666);
//    //int fd2 = open("log2.txt",O_CREAT | O_WRONLY | O_APPEND,0666);
//    //int fd3 = open("log3.txt",O_CREAT | O_WRONLY | O_APPEND,0666);
//    //int fd4 = open("log4.txt",O_CREAT | O_WRONLY | O_APPEND,0666);
//    //printf("fd1 : %d\n",fd1);
//    //printf("fd2 : %d\n",fd2);
//    //printf("fd3 : %d\n",fd3);
//    //printf("fd4 : %d\n",fd4);
//    return 0;                                                                                                    
//}
//int main()
//{
//    int fd = open("log.txt",O_CREAT | O_WRONLY | O_TRUNC, 0666);
//    if(fd < 0)  return -1;
//    printf("fd : %d\n",fd);
//    close(fd);
//    return 0;
//}

//int main()
//{
//    //int fd = open("love.txt",O_WRONLY | O_CREAT,0666);
//    //int fd = open("love.txt",O_WRONLY | O_CREAT);
//    //int fd = open("love.txt",O_WRONLY | O_TRUNC);
//    //int fd = open("love.txt",O_WRONLY);
//    int fd = open("love.txt",O_WRONLY | O_APPEND);
//    if(fd < 0){
//        perror("open");
//        return 1;
//    }
//    char buff[] = "abcdef";
//    write(fd,buff,strlen(buff));
//    close(fd);
//    return 0;
//}

//#define ONE 0001
//#define TWO 0002
//#define THREE 0004
//
//void func(int flag){
//    if(flag & ONE)  printf("ONE ");
//    if(flag & TWO)  printf("TWO ");
//    if(flag & THREE)  printf("THREE ");
//    printf("\n");
//}
//int main()
//{
//    //func(ONE);
//    //func(ONE | TWO);
//    //func(ONE | THREE);
//    //func(ONE | TWO | THREE);
//    //FILE* fp = fopen("log.txt","r");
//    //if(fp == NULL){
//    //    perror("fopen");
//    //    return 1;
//    //}
//    //for(int i = 0;i<26;i++){
//    //    printf("%c",fgetc(fp));
//    //}
//    //printf("\n");
//    //char buff[20];
//    //fgets(buff,12,fp);
//    ////buff[11] = '\0';
//    //printf("%s",buff);
//    //int x;
//    //fscanf(fp,"x = %d",&x);
//    //printf("x = %d\n", x);
//    //fclose(fp);
//    //FILE* fp = fopen("log.txt","w");
//    //if(fp == NULL){
//    //    perror("fopen");
//    //    return 1;
//    //}
//    ////....
//    //for(char ch = 'a';ch <= 'z';ch++){
//    //    fputc(ch,fp);
//    //}
//    //char* str = (char*)"I love you\n";
//    //fputs(str,fp);
//    //int x = 100;
//    //fprintf(fp,"x = %d\n",x);
//    //fclose(fp);
//    return 0;
//}
